/// *
// * 文件名：LogFilter.java
// * 版权：MoonBox
// * 修改人：Peter
// * 修改时间：2018年10月8日
// * 修改内容：新增
// */
// package com.renzhebiao.lkang.request;
//
// import java.io.IOException;
// import java.net.URLDecoder;
// import java.util.HashMap;
// import java.util.Map;
//
// import javax.servlet.Filter;
// import javax.servlet.FilterChain;
// import javax.servlet.FilterConfig;
// import javax.servlet.ServletException;
// import javax.servlet.ServletRequest;
// import javax.servlet.ServletResponse;
// import javax.servlet.annotation.WebFilter;
// import javax.servlet.http.HttpServletRequest;
// import javax.servlet.http.HttpServletResponse;
//
// import org.apache.catalina.connector.ResponseFacade;
// import org.springframework.stereotype.Component;
//
// import com.alibaba.fastjson.JSON;
//
// import lombok.extern.log4j.Log4j;
//
/// **
// * <p>
// * 请求数据
// *
// * @author Peter
// * @since 1.0.0
// */
// @Log4j
// @Component
// @WebFilter(filterName = "logFilter", urlPatterns = "/*")
// public class LogFilter implements Filter {
//
// // private static final Log log = LogFactory.getLog(LogFilter.class);
//
// private static final String ignoreUrlRegex =
/// ".*((pay/)|(/index)|(/index/.*)|([.]((html)|(jsp)|(css)|(js)|(gif)|(png))))$";
//
// @Override
// public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
// FilterChain filterChain) throws IOException, ServletException {
// // ThreadContext.put("TId", UUID.randomUUID().toString());
// ResponseWrapper responseWrapper = new ResponseWrapper(Thread.currentThread().getId(),
// (HttpServletResponse) servletResponse);
// HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
// RequestWrapper requestWrapper = new RequestWrapper(Thread.currentThread().getId(), httpServletRequest);
//
// // 请求html页面、js不打印日志
// if (httpServletRequest.getRequestURI().matches(ignoreUrlRegex)) {
// // ThreadContext.clearAll();
// filterChain.doFilter(servletRequest, responseWrapper);
// return;
// }
//
// Map params;
// // 记录入参
// log.info("请求的URL：" + httpServletRequest.getRequestURI());
//
// // 打印from格式的入参信息
// params = servletRequest.getParameterMap();
// if (null != params && params.size() != 0) {
// log.info("入参：" + JSON.toJSONString(params));
// } else {
// // 打印json格式的入参信息
// String charEncoding = requestWrapper.getCharacterEncoding() != null ? requestWrapper.getCharacterEncoding() :
/// "UTF-8";
// log.info("入参" + new String(requestWrapper.toByteArray(), charEncoding));
// }
// filterChain.doFilter(requestWrapper, responseWrapper);
// // 记录出参
// String outParam = new String();
// // 记录出参响应头
// params = new HashMap();
// // 如果响应头存在errorCode则打印，除文件下载外均不存在
// try {
// params.put("errorCode", ((ResponseFacade) servletResponse).getHeader("errorCode"));
// params.put("errorMsg",
// (URLDecoder.decode(((ResponseFacade) servletResponse).getHeader("errorMsg"), "UTF-8")));
// outParam = JSON.toJSONString(params);
// } catch (Exception e) {
// }
//
// // 记录出参响应体
// if (params.size() < 2) {
// outParam = outParam + new String(responseWrapper.toByteArray(), responseWrapper.getCharacterEncoding());
// }
//
// log.info("出参：" + outParam);
//
// }
//
// @Override
// public void init(FilterConfig filterConfig) throws ServletException {
// }
//
// @Override
// public void destroy() {
// }
// }
